import urlconfig from '../config.js'
import apiarr from './hrapi.js'

export default function() {
	function _myrequest() {
		//是否请求完成-防止多次请求
		this.status = true;
	}

	// 生成请求
	_myrequest.prototype.getRequest = function(config) {
		var _url = config.url;
		var _method = config.method;
		var _data = config.data;
		var _header = config.header;
		var obj = {
			'url': _url,
			'method': _method,
			'data': _data,
			'header': _header
		}
		return uni.request(obj)
	}

	// 发送请求
	_myrequest.prototype.sendRequest = function(config) {
		var _request = this.getRequest(config);
		// 此处可完成加载中处理或是否可重复请求判断
		// var _this = this;
		// if(_this.status){}
		// _request.then(function(res) {
		// 	//此处可添加成功回调
		// 	_this.handleRequest(res,true);
		// }).catch(function(err) {
		// 	//此处可添加错误回调
		// 	_this.handleRequest(err,false);
		// })
		return _request;
	}

	// 默认处理请求
	_myrequest.prototype.handleRequest = function(res,flag) {
		if(flag){
			if(res.code == 2000){
				return res.data
			}else{
				return res
			}
		}else{
			return Promise.reject(res)
		}
	}

	//初始化
	var _configRequest = new _myrequest();
	var _urlHost = urlconfig.api.host;
	for(let key in apiarr){
		//此处添加回调callback
		_configRequest[key] = function(config/* ，callback */){
			var _host = config && config.host || _urlHost;
			var _url = config && config.url || apiarr[key];
			return _configRequest.sendRequest({
				url:_host + _url,
				method: config && config.method || "POST",
				data: config && config.data || null,
				header: config && config.header || null,
				// callback: config && callback || 'default'  预留回调扩展
			})
		}
	}
	return _configRequest;
}
